import dayjs from "dayjs";
import customParseFormat from 'dayjs/plugin/customParseFormat' // ES 2015
// 其它例如相对时间，需要单独配置它自己的插件才可以使用
dayjs.extend(customParseFormat)

// 格式化数据，递归将空的children置为undefined
// el-cascader children为空不显示
export function formatChildrenData(data) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].children.length < 1) {
            // children若为空数组，则将children设为undefined
            data[i].children = undefined
        } else {
            // children若不为空数组，则继续 递归调用 本方法
            formatChildrenData(data[i].children)
        }
    }
    return data
}

// 示例使用
// let totalSeconds = 137;
// let timeFormat = secondsToTimeFormat(totalSeconds);
// console.log(timeFormat);
export function secondsToMinutes(seconds) {
    return (Number(seconds) / 60).toFixed(2)
}


// 示例调用
// const seconds = 3661;
// const result = secondsToHMS(seconds);
// console.log(result); // 输出: 01:01:01
export function secondsToHMS(seconds) {
    const hours = Math.floor(seconds / 3600);
    seconds %= 3600;
    const minutes = Math.floor(seconds / 60);
    seconds = Math.floor(seconds % 60);

    // 使用 padStart 方法在前面补 0
    return [hours, minutes, seconds]
        .map(unit => String(unit).padStart(2, '0'))
        .join(':');
}


// 示例调用
// const time = '01:02:03';
// const result = hmsToSeconds(time);
// console.log(result); // 输出: 3723
export function hmsToSeconds(timeStr) {
    // 使用冒号分割时分秒
    const parts = timeStr.split(':');
    // 确保分割结果包含时、分、秒三个部分
    if (parts.length === 3) {
        const hours = parseInt(parts[0], 10);
        const minutes = parseInt(parts[1], 10);
        const seconds = parseInt(parts[2], 10);
        // 计算总秒数
        return hours * 3600 + minutes * 60 + seconds;
    }
    // 若格式不正确，返回 0
    return 0;
}


export function convertObjectValuesToString(obj) {
    const result = {};
    for (const [key, value] of Object.entries(obj)) {
        // 将每个值转换为字符串
        result[key] = String(value);
    }
    return result;
}


// 示例用法
// const sampleObj = {
//     key1: 'value1',
//     key2: null,
//     key3: '',
//     key4: 'value4'
// };
// const result = fillEmptyValuesWithSlash(sampleObj,"",'/');
// console.log(result);
// 转换对象中值为targetStr的字段填充为conversionStr。
// 例如sampleObj对象的空值用'/'填充为。
export function fillEmptyValuesWithSlash(obj, targetStr = "", conversionStr = '/') {
    // 使用Object.entries将对象转换为[key, value]对的数组
    const entries = Object.entries(obj);
    // 使用map方法遍历数组，检查值是否为空并替换
    const newEntries = entries.map(([key, value]) => {
        if (value === null || value === targetStr) {
            value = conversionStr;
        }
        return [key, value];
    });
    // 使用Object.fromEntries将[key, value]对的数组转换回对象
    return Object.fromEntries(newEntries);
}


// 使用示例
// const timeStr = "2025-06-26 15:43:53";
// const formattedTime = formatTime(timeStr);
// console.log(formattedTime); //"2025-06-26 15时43分";
export function formatTime(str) {
    const date = new Date(str);
    const year = date.getFullYear();
    let month = date.getMonth() + 1;
    let day = date.getDate();
    const hours = date.getHours();
    const minutes = date.getMinutes();
    // 处理月份为个位数的情况
    if (month < 10) {
        month = month.toString().replace(/^0+/, '');
    }
    // 处理日期为个位数的情况
    if (day < 10) {
        day = day.toString().replace(/^0+/, '');
    }
    return `${year}-${month}-${day} ${hours}时${minutes}分`;
}


// 示例使用
// const originalTime = '2025-6-26 15时43分';
// const formattedTime = formatTime(originalTime);
// console.log(formattedTime); // 输出：2025-6-26 15:43:00
export function formatTimeReverse(str) {
    const parts = str.split(' ');
    const dateParts = parts[0].split('-');
    const timeParts = parts[1].split('时');
    const year = dateParts[0];
    let month = dateParts[1];
    let day = dateParts[2];
    const hours = timeParts[0];
    const minutes = timeParts[1].replace('分', '');
    // 确保月份和日期是两位数
    if (month.length === 1) {
        month = '0' + month;
    }
    if (day.length === 1) {
        day = '0' + day;
    }
    return `${year}-${month}-${day} ${hours}:${minutes}:00`;
}


//     const dateStr = "2025年05月24日 06时43分"
//     console.log(formattedDate) // 输出: "2025-05-24 06:43:00"
export function formatDate_nianyuerishifenmiao(dateStr) {
    // 定义自定义格式
    const date = dayjs(dateStr, 'YYYY年MM月DD日 HH时mm分')
    // 格式化为目标格式
    return date.format('YYYY-MM-DD HH:mm:ss')
}

// 互转
export function formatDate_dayjs(dateStr,currentModel,targetModel) {
    // 定义自定义格式
    return  dayjs(dateStr, currentModel).format(targetModel)
}


//width、height调用时传入具体像素值，控制大小 ,不传则默认图像大小
function getBase64Image(img, width, height) {
    var canvas = document.createElement("canvas");
    canvas.width = width ? width : img.width;
    canvas.height = height ? height : img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
    var dataURL = canvas.toDataURL();
    return dataURL;
}

// url图片转base64
export function getCanvasBase64(img) {
    var image = new Image();
    //至关重要
    image.crossOrigin = '';
    image.src = img;
    //至关重要
    var deferred = $.Deferred();
    if (img) {
        image.onload = function () {
            deferred.resolve(getBase64Image(image));//将base64传给done上传处理
            //document.getElementById("container2").appendChild(image);
        }
        return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']
    }
}
